package tw.com.hitevision.whiteboard.android.widgets.floatView.data

import android.view.View
import tw.com.hitevision.whiteboard.android.widgets.floatView.interfaces.OnDisplayHeight
import tw.com.hitevision.whiteboard.android.widgets.floatView.interfaces.OnInvokeView
import tw.com.hitevision.whiteboard.android.widgets.floatView.anim.AppFloatDefaultAnimator
import tw.com.hitevision.whiteboard.android.widgets.floatView.anim.DefaultAnimator
import tw.com.hitevision.whiteboard.android.widgets.floatView.enums.CompensateParameter
import tw.com.hitevision.whiteboard.android.widgets.floatView.enums.HiddenPattern
import tw.com.hitevision.whiteboard.android.widgets.floatView.enums.ShowPattern
import tw.com.hitevision.whiteboard.android.widgets.floatView.enums.SidePattern
import tw.com.hitevision.whiteboard.android.widgets.floatView.interfaces.*
import tw.com.hitevision.whiteboard.android.widgets.floatView.utils.DefaultDisplayHeight

data class FloatConfig(

        var layoutId: Int? = null,

        var layoutView: View? = null,

        var floatTag: String? = null,

        var dragEnable: Boolean = true,

        var isDrag: Boolean = false,

        var isAnim: Boolean = false,

        var isShow: Boolean = false,

        var hasEditText: Boolean = false,

        var sidePattern: SidePattern = SidePattern.DEFAULT,

        var showPattern: ShowPattern = ShowPattern.CURRENT_ACTIVITY,

        var hiddenPattern: HiddenPattern = HiddenPattern.DEFAULT,

        var widthMatch: Boolean = false,

        var heightMatch: Boolean = false,

        var gravity: Int = 0,

        var offsetPair: Pair<Int, Int> = Pair(0, 0),

        var locationPair: Pair<Int, Int> = Pair(0, 0),

        var invokeView: OnInvokeView? = null,

        var callbacks: OnFloatCallbacks? = null,

        var floatCallbacks: FloatCallbacks? = null,

        var floatAnimator: OnFloatAnimator? = DefaultAnimator(),

        var appFloatAnimator: OnAppFloatAnimator? = AppFloatDefaultAnimator(),

        var displayHeight: OnDisplayHeight = DefaultDisplayHeight(),

        val filterSet: MutableSet<String> = mutableSetOf(),

        internal var filterSelf: Boolean = false,

        internal var needShow: Boolean = true,

        var compensateParameter: Int = CompensateParameter.DEFAULT.value,

        var anchorPair: Pair<Int, Int> = Pair(0, 0)
)